common.skill

সেশন এবং কুকিজ (Session and Cookies)

Microsoft Technologies - এএসপি ডট নেট কোর (ASP.Net Core)
208
208

ASP.NET Core অ্যাপ্লিকেশনে Session এবং Cookies দুটি গুরুত্বপূর্ণ উপাদান, যা ইউজারের ডেটা বা স্টেট ম্যানেজ করতে ব্যবহৃত হয়। এগুলো বিশেষভাবে ব্যবহারকারীর তথ্য সুরক্ষিতভাবে সংরক্ষণ এবং অ্যাপ্লিকেশনের মধ্যে ডেটা শেয়ার করার জন্য ব্যবহৃত হয়।


সেশন (Session) কী?

Session হলো সার্ভার সাইডে ইউজারের তথ্য সংরক্ষণ করার একটি পদ্ধতি, যা ব্যবহারকারীর প্রতিটি রিকোয়েস্টের জন্য একটি ইউনিক আইডি তৈরি করে। এই আইডি ব্যবহার করে সার্ভার ইউজারের ডেটা সংরক্ষণ করে এবং প্রতিটি রিকোয়েস্টে সেই ডেটা অ্যাক্সেস করতে দেয়।

সাধারণত, সেশন ব্যবহারকারীর লগইন স্ট্যাটাস, শপিং কার্ট, এবং অন্যান্য ডায়নামিক ডেটা সংরক্ষণ করার জন্য ব্যবহৃত হয়।

সেশন ব্যবহার করার জন্য কনফিগারেশন

Session ব্যবহার করতে হলে প্রথমে ASP.NET Core অ্যাপ্লিকেশনে সেশন পরিষেবা রেজিস্টার করতে হবে।

Program.cs বা Startup.cs ফাইলে সেশন পরিষেবা কনফিগার করুন:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDistributedMemoryCache(); // সেশন কুকিজ স্টোর করার জন্য
        services.AddSession(options =>
        {
            options.IdleTimeout = TimeSpan.FromMinutes(30); // সেশন এর সময়সীমা
            options.Cookie.HttpOnly = true;  // কুকি সিকিউরিটি
            options.Cookie.IsEssential = true; // কুকি ব্যবহার করা আবশ্যক
        });
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseSession();  // সেশন ব্যবহারের জন্য
    }
}

সেশন ডেটা সংরক্ষণ এবং রিড করা

এখন সেশন কনফিগার করার পরে, সেশন ডেটা অ্যাক্সেস এবং সেট করা যায়:

সেশন ডেটা সেট করা:

public class HomeController : Controller
{
    public IActionResult SetSessionData()
    {
        HttpContext.Session.SetString("UserName", "JohnDoe");
        return RedirectToAction("GetSessionData");
    }
}

সেশন ডেটা রিড করা:

public class HomeController : Controller
{
    public IActionResult GetSessionData()
    {
        var userName = HttpContext.Session.GetString("UserName");
        ViewBag.UserName = userName;
        return View();
    }
}

কুকিজ (Cookies) কী?

Cookies হলো ক্লায়েন্ট সাইডে ইউজারের ডেটা সংরক্ষণের পদ্ধতি, যা ইউজারের ব্রাউজারে স্টোর হয়। কুকিজ সাধারণত ইউজারের প্রেফারেন্স, লগইন স্ট্যাটাস, বা ব্রাউজিং হিস্ট্রি সঞ্চিত রাখে, যাতে পরবর্তী রিকোয়েস্টে সেই তথ্য ব্যবহার করা যায়।

Cookies সাধারণত ছোট টেক্সট ফাইল হিসেবে ব্রাউজারে সংরক্ষণ হয় এবং ইউজারের সাথে সংযুক্ত থাকে।

কুকি তৈরি এবং সেট করা

ASP.NET Core অ্যাপ্লিকেশনে কুকি তৈরি এবং সেট করার জন্য, HttpResponse.Cookies এবং HttpRequest.Cookies ব্যবহার করা হয়।

কুকি সেট করা:

public class HomeController : Controller
{
    public IActionResult SetCookie()
    {
        // কুকি সেট করা
        Response.Cookies.Append("UserName", "JohnDoe", new CookieOptions
        {
            Expires = DateTime.Now.AddMinutes(30), // কুকির মেয়াদ
            HttpOnly = true, // সিকিউরিটি ফিচার
            IsEssential = true // কুকি ব্যবহার করা আবশ্যক
        });

        return RedirectToAction("GetCookie");
    }
}

কুকি রিড করা:

public class HomeController : Controller
{
    public IActionResult GetCookie()
    {
        // কুকি থেকে ডেটা রিড করা
        var userName = Request.Cookies["UserName"];
        ViewBag.UserName = userName;
        return View();
    }
}

সেশন এবং কুকির মধ্যে পার্থক্য

বৈশিষ্ট্যসেশন (Session)কুকি (Cookies)
সংরক্ষণ স্থানসার্ভারে স্টোর হয়।ক্লায়েন্ট (ব্যবহারকারীর ব্রাউজারে) স্টোর হয়।
ডেটার ধরনডায়নামিক এবং সেশনের সময়কাল পর্যন্ত সংরক্ষিত।স্থায়ী ডেটা বা প্রেফারেন্স সংরক্ষণ করে।
সিকিউরিটিসিকিউর এবং সার্ভার সাইডে সংরক্ষিত।ব্রাউজারে, তাই কিছুটা কম সিকিউর।
অ্যাক্সেসসার্ভার সাইড থেকে অ্যাক্সেস করা হয়।ক্লায়েন্ট সাইড থেকে অ্যাক্সেস করা হয়।
অন্তর্ভুক্ত সীমাবদ্ধতাসার্ভার রিসোর্স ব্যবহার করে।ব্রাউজারের সীমাবদ্ধতা (4KB পর্যন্ত)।

সেশন এবং কুকি ব্যবহারের সুবিধা

সেশন:

  1. অস্থায়ী ডেটা সংরক্ষণ: সেশন সাধারণত অস্থায়ী ডেটা সংরক্ষণ করতে ব্যবহৃত হয়, যেমন ব্যবহারকারীর লগইন তথ্য।
  2. সার্ভার সাইড সিকিউরিটি: সেশন সিকিউর এবং সার্ভার সাইডে সংরক্ষিত, তাই এটি ক্লায়েন্ট সাইডের তুলনায় বেশি নিরাপদ।

কুকি:

  1. স্থায়ী ডেটা: কুকি স্থায়ী ডেটা সংরক্ষণ করতে ব্যবহৃত হয়, যেমন ব্যবহারকারীর প্রেফারেন্স বা লগইন স্ট্যাটাস।
  2. ক্লায়েন্ট সাইড অ্যাক্সেস: কুকি ক্লায়েন্ট সাইডে অ্যাক্সেসযোগ্য, তাই এটি দ্রুত এবং কার্যকরী।

সারাংশ

Session এবং Cookies দুইটি গুরুত্বপূর্ণ প্রযুক্তি যা ASP.NET Core অ্যাপ্লিকেশনে ব্যবহারকারীর তথ্য সংরক্ষণ ও অ্যাক্সেস করার জন্য ব্যবহৃত হয়। সেশন সাধারণত সার্ভার সাইডে স্টোর করা হয় এবং স্বল্প-মেয়াদী ডেটার জন্য উপযুক্ত, যেখানে কুকি ক্লায়েন্ট সাইডে স্টোর হয় এবং স্থায়ী ডেটা সংরক্ষণে ব্যবহৃত হয়। ব্যবহারকারী স্ট্যাটাস বা ব্রাউজার প্রেফারেন্স সেভ করতে Cookies এবং অ্যাপ্লিকেশনের কার্যকলাপ ট্র্যাক করতে Session ব্যবহৃত হয়।

common.content_added_by

সেশন ব্যবস্থাপনা

198
198

ASP.NET Core-এ সেশন ব্যবস্থাপনা ব্যবহারকারীর তথ্য সংরক্ষণ এবং ব্যবহারকারীর পরবর্তী রিকোয়েস্টগুলোর জন্য তা পুনরায় ব্যবহার করার একটি কার্যকরী পদ্ধতি। সেশন ব্যবস্থাপনা দ্বারা, আপনি ক্লায়েন্টের সেশনকে ট্র্যাক করতে পারেন, যা একটি নির্দিষ্ট সময়ের জন্য তথ্য সংরক্ষণ করে এবং ব্যবহারকারীর প্রতিটি রিকোয়েস্টে তথ্য অ্যাক্সেস করা সম্ভব হয়।


সেশন ব্যবস্থাপনার মূল ধারণা

সেশন হল একটি সার্ভার সাইড প্রযুক্তি যা ক্লায়েন্টের (ব্যবহারকারীর) তথ্য সংরক্ষণ করতে সাহায্য করে। ব্যবহারকারী সাইটে প্রবেশ করার সময় একটি সেশন আইডি তৈরি হয় এবং সেই আইডি ক্লায়েন্টের ব্রাউজারে কুকি (cookie) হিসেবে সংরক্ষিত থাকে। সেশন তথ্য সাধারণত সার্ভার সাইডে রাখা হয়, যা নিরাপদে তথ্য সংরক্ষণ করতে সহায়তা করে।

ASP.NET Core-এ সেশন ব্যবস্থাপনা সহজেই কনফিগার করা যায় এবং এটি ডেটা, শপিং কার্ট, ইউজার অথেনটিকেশন স্টেট এবং অন্যান্য সাময়িক তথ্য সংরক্ষণে ব্যবহৃত হয়।


সেশন ব্যবস্থাপনা কনফিগার করা

ASP.NET Core-এ সেশন ব্যবস্থাপনা শুরু করতে হলে প্রথমে সেশন সার্ভিসকে কনফিগার করতে হবে এবং তারপর সেশন ডেটা অ্যাক্সেস করতে হবে।

1. সেশন সার্ভিস কনফিগার করা

আপনার Startup.cs ফাইলে সেশন সার্ভিস কনফিগার করতে হবে।

public void ConfigureServices(IServiceCollection services)
{
    // সেশন ব্যবস্থাপনা কনফিগার করা
    services.AddDistributedMemoryCache();  // ইন-মেমরি ক্যাশ
    services.AddSession(options =>
    {
        options.IdleTimeout = TimeSpan.FromMinutes(30);  // সেশন টাইমআউট ৩০ মিনিট
        options.Cookie.HttpOnly = true;  // শুধুমাত্র HTTP রিকোয়েস্টের মাধ্যমে অ্যাক্সেসযোগ্য
        options.Cookie.IsEssential = true;  // কুকি প্রয়োজনীয়
    });

    services.AddControllersWithViews();
}
  • AddDistributedMemoryCache(): এটি ইন-মেমরি ক্যাশ তৈরি করে যা সেশন ডেটা সংরক্ষণ করবে।
  • AddSession(): সেশন ব্যবস্থাপনা সক্ষম করে এবং সেশন আইডি সম্পর্কিত কুকি কনফিগার করে।
  • IdleTimeout: এটি সেশনের সময়সীমা নির্ধারণ করে। ৩০ মিনিট পর সেশন শেষ হয়ে যাবে।

2. সেশন ব্যবহারে সেশন মদ্ধকরণ

এখন, Configure() মেথডে সেশন ব্যবস্থাপনাকে middleware হিসেবে অন্তর্ভুক্ত করতে হবে:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    // সেশন middleware যোগ করা
    app.UseSession();  

    app.UseRouting();

    app.UseAuthorization();

    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
}

app.UseSession() ব্যবহার করার মাধ্যমে সেশন ম্যানেজমেন্ট চালু হয়, যা রিকোয়েস্টে সেশন ডেটা সংরক্ষণ এবং অ্যাক্সেস করতে সাহায্য করে।


সেশনে ডেটা সংরক্ষণ ও অ্যাক্সেস করা

1. সেশন ডেটা সংরক্ষণ করা

কোনো ভিউ বা কন্ট্রোলার থেকে সেশনে ডেটা সংরক্ষণ করতে পারেন। সেশন ডেটা HttpContext.Session এর মাধ্যমে সংরক্ষণ এবং পুনরুদ্ধার করা যায়।

public class HomeController : Controller
{
    public IActionResult Index()
    {
        // সেশনে ডেটা সংরক্ষণ
        HttpContext.Session.SetString("UserName", "John Doe");

        return View();
    }
}

এখানে, SetString() মেথড ব্যবহার করে "UserName" কী দিয়ে একটি স্ট্রিং ডেটা সেশন-এ সংরক্ষণ করা হচ্ছে।

2. সেশন ডেটা পুনরুদ্ধার করা

আপনি সেশন থেকে ডেটা পুনরুদ্ধার করতে GetString() বা অন্যান্য টাইপ-স্পেসিফিক মেথড ব্যবহার করতে পারেন।

public class HomeController : Controller
{
    public IActionResult About()
    {
        // সেশন থেকে ডেটা পুনরুদ্ধার
        string userName = HttpContext.Session.GetString("UserName");

        if (userName != null)
        {
            ViewData["Message"] = $"Welcome, {userName}";
        }
        else
        {
            ViewData["Message"] = "Welcome, Guest";
        }

        return View();
    }
}

এখানে GetString() ব্যবহার করে "UserName" কী থেকে স্ট্রিং ডেটা পুনরুদ্ধার করা হচ্ছে।

3. অন্য ডেটা টাইপ সংরক্ষণ

ASP.NET Core-এ সেশন শুধুমাত্র স্ট্রিং ডেটা সংরক্ষণ করতে ব্যবহৃত হয় না, আপনি অন্যান্য ডেটা টাইপও সংরক্ষণ করতে পারেন যেমন অ-স্ট্রিং ভ্যালু বা কাস্টম অবজেক্ট।

এনকোডিং এবং ডিকোডিং এর মাধ্যমে সেশন ব্যবহার করা:

public IActionResult SaveData()
{
    var userData = new UserData { Id = 1, Name = "John" };

    // সেশন-এ কাস্টম অবজেক্ট সংরক্ষণ
    HttpContext.Session.SetString("UserData", JsonConvert.SerializeObject(userData));
    
    return View();
}

public IActionResult RetrieveData()
{
    var userDataJson = HttpContext.Session.GetString("UserData");

    if (userDataJson != null)
    {
        var userData = JsonConvert.DeserializeObject<UserData>(userDataJson);
        ViewData["UserName"] = userData.Name;
    }
    return View();
}

এখানে JsonConvert.SerializeObject এবং JsonConvert.DeserializeObject ব্যবহার করা হয়েছে JSON ফরম্যাটে ডেটা সংরক্ষণ এবং পুনরুদ্ধার করার জন্য।


সেশন রিসেট বা শেষ করা

Clear() মেথড ব্যবহার করে আপনি সেশনের সব ডেটা রিসেট করতে পারেন। অথবা Remove() মেথড ব্যবহার করে একটি নির্দিষ্ট কী মুছে ফেলতে পারেন।

public IActionResult Logout()
{
    // সেশন ডেটা মুছে ফেলতে
    HttpContext.Session.Clear();  // সব সেশন ডেটা রিসেট

    // নির্দিষ্ট সেশন কী মুছে ফেলতে
    HttpContext.Session.Remove("UserName");

    return RedirectToAction("Index");
}

সারাংশ

ASP.NET Core-এ সেশন ব্যবস্থাপনা ব্যবহারকারী ডেটা সংরক্ষণ এবং অ্যাক্সেসের একটি গুরুত্বপূর্ণ উপায়। সেশন ব্যবস্থাপনা কনফিগার করার পর আপনি সহজেই সেশন ডেটা সংরক্ষণ, পুনরুদ্ধার এবং মুছে ফেলতে পারেন। এটি শপিং কার্ট, ইউজার অথেনটিকেশন এবং সাময়িক ডেটা সংরক্ষণের জন্য অত্যন্ত কার্যকরী।

common.content_added_by

কুকিজ ব্যবহারের পদ্ধতি এবং নিরাপত্তা

192
192

কুকিজ (Cookies) হলো ছোট ডেটা ফাইল যা ক্লায়েন্টের ব্রাউজারে সংরক্ষণ করা হয় এবং HTTP রিকোয়েস্টের সময় সার্ভারে পাঠানো হয়। ASP.NET Core-এ কুকিজ ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন ডেটা সংরক্ষণ, ইউজার সেশন ম্যানেজমেন্ট এবং কাস্টমাইজড অভিজ্ঞতা প্রদান করা যায়। তবে, কুকিজ ব্যবহারের সময় নিরাপত্তার বিষয়টি অত্যন্ত গুরুত্বপূর্ণ।


ASP.NET Core-এ কুকিজ ব্যবহারের পদ্ধতি

কুকিজ সেট করা

ASP.NET Core-এ কুকিজ সেট করতে HttpContext.Response.Cookies.Append() মেথড ব্যবহার করা হয়।

public IActionResult SetCookie()
{
    CookieOptions options = new CookieOptions
    {
        Expires = DateTime.Now.AddMinutes(30) // কুকির মেয়াদ নির্ধারণ
    };
    Response.Cookies.Append("UserPreference", "DarkMode", options);
    return Content("Cookie set successfully!");
}

কুকিজ পড়া

কুকিজ পড়তে HttpContext.Request.Cookies ব্যবহার করা হয়।

public IActionResult GetCookie()
{
    var userPreference = Request.Cookies["UserPreference"];
    if (userPreference != null)
    {
        return Content($"User Preference: {userPreference}");
    }
    return Content("No cookie found!");
}

কুকিজ মুছে ফেলা

কুকিজ মুছে ফেলতে HttpContext.Response.Cookies.Delete() মেথড ব্যবহার করা হয়।

public IActionResult DeleteCookie()
{
    Response.Cookies.Delete("UserPreference");
    return Content("Cookie deleted successfully!");
}

ASP.NET Core-এ কুকিজ কনফিগারেশন

Startup.cs ফাইলে কুকিজ ব্যবহারের কনফিগারেশন যোগ করা যায়।

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();

    services.Configure<CookiePolicyOptions>(options =>
    {
        options.MinimumSameSitePolicy = SameSiteMode.Strict; // SameSite পলিসি
        options.Secure = CookieSecurePolicy.Always; // শুধুমাত্র HTTPS এ কুকিজ পাঠানো
    });
}

Middleware ব্যবহার করে কুকিজ পরিচালনা:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseCookiePolicy(); // Cookie Policy Middleware
    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapDefaultControllerRoute();
    });
}

কুকিজ ব্যবহারের নিরাপত্তা

কুকিজ ব্যবহারের সময় ডেটার নিরাপত্তা নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ। নিচে ASP.NET Core-এ কুকিজ ব্যবহারে নিরাপত্তার জন্য কিছু নির্দেশিকা দেওয়া হলো:

১. HTTPS ব্যবহার করা

কুকিজ নিরাপদ রাখতে Secure ফ্ল্যাগ ব্যবহার করে শুধুমাত্র HTTPS রিকোয়েস্টে কুকিজ পাঠানো উচিত।

CookieOptions options = new CookieOptions
{
    Secure = true
};

২. HttpOnly ফ্ল্যাগ ব্যবহার করা

HttpOnly ফ্ল্যাগ ব্যবহার করে নিশ্চিত করুন যে কুকিজ শুধুমাত্র সার্ভার-সাইড স্ক্রিপ্ট দ্বারা অ্যাক্সেসযোগ্য এবং ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট দ্বারা অ্যাক্সেসযোগ্য নয়।

CookieOptions options = new CookieOptions
{
    HttpOnly = true
};

৩. SameSite পলিসি প্রয়োগ করা

SameSite পলিসি ব্যবহার করে ক্রস-সাইট রিকোয়েস্ট থেকে কুকিজ রক্ষা করা যায়।

CookieOptions options = new CookieOptions
{
    SameSite = SameSiteMode.Strict
};

৪. কুকিজ এনক্রিপশন করা

সেন্সিটিভ ডেটা কুকিজে সংরক্ষণ করার সময় এটি এনক্রিপ্ট করা উচিত।

services.AddDataProtection();
CookieOptions options = new CookieOptions
{
    Secure = true,
    HttpOnly = true
};

৫. কুকিজের মেয়াদ নির্ধারণ করা

কুকিজের Expires বা Max-Age নির্ধারণ করে সময়সীমা বেঁধে দিন, যেন এটি অনির্দিষ্টকাল ধরে সংরক্ষিত না থাকে।

CookieOptions options = new CookieOptions
{
    Expires = DateTime.Now.AddMinutes(30)
};

৬. Cross-Site Scripting (XSS) আক্রমণ প্রতিরোধ করা

HttpOnly এবং Secure ফ্ল্যাগ ব্যবহারের পাশাপাশি কন্টেন্ট নিরাপত্তা পলিসি (CSP) প্রয়োগ করুন।

৭. Cross-Site Request Forgery (CSRF) আক্রমণ প্রতিরোধ করা

কুকিজ ব্যবহারের সময় CSRF প্রতিরোধের জন্য ASP.NET Core-এ বিল্ট-ইন AntiForgeryToken ব্যবহার করুন।


সারাংশ

ASP.NET Core-এ কুকিজ ব্যবহারের মাধ্যমে ইউজার ডেটা সংরক্ষণ এবং সেশন ম্যানেজমেন্ট সহজ হয়। তবে নিরাপত্তার বিষয়গুলো নিশ্চিত করা জরুরি, যেমন HTTPS ব্যবহার, HttpOnly ফ্ল্যাগ প্রয়োগ, এবং SameSite পলিসি অনুসরণ। সঠিক পদ্ধতিতে কুকিজ ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনের ডেটা সুরক্ষা এবং ইউজারের আস্থা নিশ্চিত করা সম্ভব।

common.content_added_by

ASP.NET Core এ TempData ব্যবহার

249
249

TempData হলো একটি বিশেষ ধরনের ডেটা স্টোর যা এক রিকোয়েস্ট থেকে আরেক রিকোয়েস্টে ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। এটি সাধারণত এমন তথ্য স্টোর করতে ব্যবহৃত হয় যা এক রিকোয়েস্টের জন্য প্রাসঙ্গিক, যেমন একটি সফল সাবমিশন বা একটি ত্রুটির বার্তা, যা পরবর্তী রিকোয়েস্টে ব্যবহারকারীর কাছে দেখানো হবে।

ASP.NET Core-এ TempData ব্যবহার করা হয় সাধারণত Redirect বা Post-Redirect-Get প্যাটার্নের সময়, যেখানে আপনাকে রিকোয়েস্টের মাঝে কিছু ডেটা পাস করতে হয়, এবং পরবর্তী রিকোয়েস্টে সেই ডেটা প্রয়োজন হয়।


TempData এর বৈশিষ্ট্যসমূহ

  • স্বল্পকালীন স্টোরেজ: TempData শুধুমাত্র একটি রিকোয়েস্ট থেকে পরবর্তী রিকোয়েস্ট পর্যন্ত ডেটা সংরক্ষণ করে। অর্থাৎ, এটি রিফ্রেশ বা নতুন রিকোয়েস্টের সাথে ডেটা মুছে যাবে।
  • ডেটা শেয়ারিং: TempData ব্যবহারকারীর একটি রিকোয়েস্ট থেকে পরবর্তী রিকোয়েস্টে ডেটা শেয়ার করার জন্য কার্যকরী। উদাহরণস্বরূপ, একটি সফল অপারেশনের পর একটি বার্তা দেখানোর জন্য।
  • সক্ষমতা: TempData বিভিন্ন ডেটা টাইপ সাপোর্ট করে, যেমন স্ট্রিং, ইন্টিজার, অবজেক্ট ইত্যাদি।

TempData ব্যবহার করার উদাহরণ

1. TempData সেট করা (Storing Data)

TempData ব্যবহার করতে আপনি Controller এর মধ্যে TempData প্রপার্টি সেট করতে পারেন:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        // TempData তে একটি বার্তা সেট করা
        TempData["Message"] = "আপনার নিবন্ধন সফল হয়েছে!";
        return RedirectToAction("Success");
    }

    public IActionResult Success()
    {
        // TempData থেকে বার্তা নেওয়া
        var message = TempData["Message"];
        return View((string)message);  // Success.cshtml এ বার্তা পাঠানো
    }
}

এখানে, TempData["Message"] সেট করা হয়েছে এবং পরবর্তী রিকোয়েস্টে Success অ্যাকশনে সেই বার্তা প্রদর্শিত হবে।

2. TempData ব্যবহার করা (Getting Data)

TempData-তে রাখা ডেটা পরবর্তী রিকোয়েস্টে অ্যাক্সেস করা হয় এবং সেগুলি Controller বা View-এ ব্যবহার করা যায়:

@{
    // TempData থেকে বার্তা দেখানো হচ্ছে
    var message = TempData["Message"] as string;
}
@if (message != null)
{
    <div class="alert alert-success">@message</div>
}

এখানে, TempData["Message"] থেকে বার্তা নেওয়া হয়েছে এবং যদি কোন বার্তা থাকে তবে সেটি UI-তে প্রদর্শিত হবে।

3. TempData এর বৈশিষ্ট্য "Keep" এবং "Peek"

  • Keep(): TempData-এ একটি মান সেট করার পর, তা শুধুমাত্র এক রিকোয়েস্টের জন্য থাকে। কিন্তু আপনি যদি চান যে, পরবর্তী রিকোয়েস্টেও TempData এর মান অব্যাহত থাকুক, তবে Keep() মেথড ব্যবহার করতে পারেন।
public IActionResult Index()
{
    TempData["Message"] = "এই বার্তা পরবর্তী রিকোয়েস্টে থাকবে!";
    TempData.Keep("Message"); // TempData থেকে বার্তা রাখবে পরবর্তী রিকোয়েস্টে
    return RedirectToAction("Success");
}
  • Peek(): Peek() মেথড ব্যবহার করে আপনি TempData থেকে মান পড়তে পারেন, কিন্তু এটি ডেটা মুছে ফেলে না। অর্থাৎ, আপনি TempData থেকে ডেটা পড়তে পারবেন এবং সেটি পরবর্তী রিকোয়েস্টেও থাকবে।
public IActionResult Success()
{
    var message = TempData.Peek("Message");
    return View((string)message);
}

এখানে, TempData থেকে মান পড়া হয়েছে এবং সেটি পরবর্তী রিকোয়েস্টের জন্য থাকবে।

4. TempData এর ব্যবহার কেস

TempData সাধারণত Post-Redirect-Get প্যাটার্নে ব্যবহার করা হয়, যেখানে একটি HTTP POST রিকোয়েস্ট থেকে ডেটা পাওয়ার পর ব্যবহারকারীকে একটি HTTP GET রিকোয়েস্টে রিডাইরেক্ট করা হয় এবং সেই সময়ে ডেটা সহ ফলাফল দেখানো হয়।

[HttpPost]
public IActionResult SubmitForm(User user)
{
    if (ModelState.IsValid)
    {
        // TempData সেট করা
        TempData["SuccessMessage"] = "ফর্ম সফলভাবে জমা হয়েছে!";
        return RedirectToAction("FormSuccess");
    }

    return View(user);
}

public IActionResult FormSuccess()
{
    // TempData থেকে ডেটা নেয়া
    var successMessage = TempData["SuccessMessage"];
    return View((string)successMessage);
}

এখানে, SubmitForm অ্যাকশনে ফর্ম সাবমিশনের পর ব্যবহারকারীকে FormSuccess অ্যাকশনে রিডাইরেক্ট করা হয়, এবং TempData থেকে একটি সফল বার্তা দেখানো হয়।


TempData এর সীমাবদ্ধতা

  1. স্বল্পকালীন স্টোরেজ: TempData শুধুমাত্র পরবর্তী রিকোয়েস্ট পর্যন্ত ডেটা সংরক্ষণ করে, তাই এটি দীর্ঘস্থায়ী ডেটা স্টোরেজের জন্য উপযুক্ত নয়।
  2. আলাদা ভিউ এবং কন্ট্রোলার ফাংশন: TempData কেবলমাত্র Controller-এ সেট করা হয় এবং পরবর্তী Controller বা View-এ অ্যাক্সেস করা যায়।
  3. পরবর্তী রিকোয়েস্টে মুছে ফেলা: TempData থেকে মান একবার রিড করা হলে তা মুছে যায়, কিন্তু আপনি চাইলে Keep() অথবা Peek() মেথড ব্যবহার করে সেটি পরবর্তী রিকোয়েস্টের জন্য রাখতে পারেন।

সারাংশ

ASP.NET Core-এ TempData একটি গুরুত্বপূর্ণ উপাদান, যা রিকোয়েস্টের মধ্যে সাময়িক ডেটা পাস করতে সাহায্য করে। এটি সাধারণত Post-Redirect-Get প্যাটার্নে ব্যবহৃত হয়, যেখানে একটি রিকোয়েস্ট থেকে পরবর্তী রিকোয়েস্টে ডেটা সংরক্ষিত থাকে। TempData ব্যবহার করে সফল অপারেশন, ত্রুটি বার্তা বা অন্য কোনও সাময়িক তথ্য শেয়ার করা যায়, এবং এটি ডেভেলপমেন্ট ও ইউআই ইন্টারঅ্যাকশনের ক্ষেত্রে অত্যন্ত কার্যকর।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion